package org.javaboy.demo.p2;

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.Profiles;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.util.MultiValueMap;

public class MyProfileCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        //找到 JavaConfig 这个配置类中凡是使用了 @MyProfile 注解的方法，并把方法上的注解的属性提取出来
        MultiValueMap<String, Object> attrs = metadata.getAllAnnotationAttributes(MyProfile.class.getName());
        if (attrs != null) {
            for (Object value : attrs.get("env")) {
//                if (context.getEnvironment().matchesProfiles((String[]) value)) {
//                    return true;
//                }
                if (context.getEnvironment().acceptsProfiles(Profiles.of((String) value))) {
                    return true;
                }
            }
            return false;
        }
        return true;
    }
}
